// const OSS = require('ali-oss')
import OSS from 'ali-oss'

export default {
  /**
   * 创建oss客户端对象
   * @returns {*}
   */
  createOssClient() {
    return new Promise((resolve, reject) => {
      const client = new OSS({
        region: 'xxx',
        accessKeyId: 'xxx',
        accessKeySecret: 'xxx',
        bucket: 'xxx',
        url: 'xxx'
      })
      resolve(client)
    })
  },

  /**
   * 文件上传
   * @param dir
   * @param name
   * @param option 参考csdn: https://blog.csdn.net/qq_27626333/article/details/81463139
   */
  ossUploadFile(dir, option) {
    const file = option.file
    const self = this
    return new Promise((resolve, reject) => {
      const fileName = `${dir}/${file.name}` // 文件名字（相对于根目录的路径 + 当前环境 +文件名）
      // 执行上传
      self.createOssClient().then(client => {
        // 异步上传,返回数据
        resolve({
          fileName: file.name,
          fileUrl: fileName
        })
        // 上传处理
        // 分片上传文件
        client.multipartUpload(fileName, file, {
          progress: function(p) {
            const e = {}
            e.percent = Math.floor(p * 100)
            option.onProgress(e)
          }
        }).then((val) => {
          if (val.res.statusCode === 200) {
            option.onSuccess(val)
            return val
          } else {
            console.log('==> 上传失败:' + JSON.stringify(val.res))
            option.onError('上传失败')
          }
        }, err => {
          console.log('===> 上传失败:' + err)
          option.onError(err || '上传失败')
          reject(err)
        })
      })
    })
  }
}
